0133ef6230840109c0dc1e8b773a11dd196b7711,java/servers/src/org/xtreemfs/osd/operations/WriteOperation.java,WriteOperation,startRequest,#OSDRequest#,51
Before Change
master.dataReceived(rq.getRPCRequest().getData().capacity());
// TODO(jdillmann): Use centralized method to check if a lease is required.
if (rq.getLocationList().getNumReplicas() > 1
&& ReplicaUpdatePolicies.isRwReplicated(rq.getLocationList().getReplicaUpdatePolicy())) {
replicatedWrite(rq,args,syncWrite);
} else {
After Change
return;
}
int numReplicas = rq.getLocationList().getNumReplicas();
String replicaUpdatePolicy = rq.getLocationList().getReplicaUpdatePolicy();
if (ReplicaUpdatePolicies.isRO(replicaUpdatePolicy)) {
// file is read only
rq.sendError(ErrorType.ERRNO, POSIXErrno.POSIX_ERROR_EPERM, "Cannot write on read-only files.");
} else {
boolean syncWrite = (rq.getCapability().getAccessMode() & SYSTEM_V_FCNTL.SYSTEM_V_FCNTL_H_O_SYNC.getNumber()) > 0;
master.objectReceived();
master.dataReceived(rq.getRPCRequest().getData().capacity());
if (numReplicas > 1 && ReplicaUpdatePolicies.isRW(replicaUpdatePolicy)) {
replicatedWrite(rq, args, syncWrite);
} else if (numReplicas == 1) {
ReusableBuffer viewBuffer = rq.getRPCRequest().getData().createViewBuffer();
master.getStorageStage().writeObject(args.getFileId(), args.getObjectNumber(), sp,
args.getOffset(), viewBuffer, rq.getCowPolicy(),
rq.getLocationList(), syncWrite, null, rq, viewBuffer, new WriteObjectCallback() {
@Override
public void writeComplete(OSDWriteResponse result, ErrorResponse error) {
sendResult(rq, result, error);
}
});
} else {
rq.sendError(ErrorType.ERRNO, POSIXErrno.POSIX_ERROR_EINVAL,
"Invalid ReplicaUpdatePolicy: " + replicaUpdatePolicy);
}
}
}